Programm zur Statusänderung
Jeder, der mit IDOC’s zu tun hatte, hat sich doch sicher schon mal die Frage gestellt, was kann ich tun, wenn ich einen IDOC habe, den ich löschen will, dies aber nicht tun kann, weil er im Workflow nicht auftaucht.Damit man auch solche IDOC’s sauber aus dem System entfernen kann hat René einen kleinen Report entwickelt. Der Report ändert den Status von IDOC’s.
|
Info
Inzwischen kann auch der – damals noch nicht vorhandene – Report RC1_IDOC_SET_STATUS verwendet werden.
Achtung:
Vor Gebrauch unbedingt den Hinweis 1481960 beachten, sonst kann es zu bösen Überraschungen kommen!
Coding
REPORT zbc_idoc_status_change LINE-SIZE 220.
************************************************************************
* R/3 Reportkopf
************************************************************************
* Programmname : ZBC_IDOC_STATUS_CHANGE
* Kurztext : IDOC-Status neu setzen
* Erstellungsdatum: 11.11.2003 – 12.11.2003
* Ersteller: Kokrhoun
* gemäß Vorgabe: -/-
*
************************************************************************
* Funktionale Beschreibung:
* Dieser Report dient dazu das man den Status eines IDOC’s nach belieben
* verändern kann. Man kann damit auch IDOC’s beliebig oft wieder aus
* einem Status zurückholen.
*
************************************************************************
* Deklarationsteil *
************************************************************************
TYPES:
BEGIN OF itab,
docnum LIKE edidc-docnum,
mestyp LIKE edidc-mestyp,
status LIKE edidc-status,
rcvprn LIKE edidc-rcvprn,
credat LIKE edidc-credat,
END OF itab.
DATA:
it_itab TYPE TABLE OF itab,
wa_itab LIKE LINE OF it_itab,
lines TYPE i VALUE ‘0’,
zaehler TYPE i VALUE ‘0’.
************************************************************************
* Auswahlscreen *
************************************************************************
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-s01.
PARAMETERS: v_status LIKE edidc-status OBLIGATORY.
SELECT-OPTIONS: v_mestyp FOR wa_itab-mestyp OBLIGATORY.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-s02.
SELECT-OPTIONS: v_docnum FOR wa_itab-docnum,
v_credat FOR wa_itab-credat,
v_rcvprn FOR wa_itab-rcvprn NO INTERVALS
NO-EXTENSION.
SELECTION-SCREEN END OF BLOCK b2.
SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-s03.
PARAMETERS: n_status LIKE edidc-status OBLIGATORY,
v_updat AS CHECKBOX DEFAULT ‘X’.
SELECTION-SCREEN END OF BLOCK b3.
************************************************************************
* Verarbeitungsteil *
************************************************************************
START-OF-SELECTION.
CLEAR it_itab.
CLEAR wa_itab.
* Auslesen der Daten
SELECT docnum mestyp status rcvprn credat
INTO TABLE it_itab
FROM edidc
WHERE status = v_status
AND rcvprn in v_rcvprn
AND credat IN v_credat
AND docnum IN v_docnum
AND mestyp IN v_mestyp.
DESCRIBE TABLE it_itab LINES sy-tfill.
* Bei gefundenen Daten erfolgt die Verarbeitung
CHECK sy-tfill GT 0.
SORT it_itab BY docnum ASCENDING.
LOOP AT it_itab INTO wa_itab.
WRITE:/ wa_itab-docnum,
20 wa_itab-mestyp,
30 wa_itab-credat,
41 wa_itab-status,
46 n_status.
lines = lines + 1.
ENDLOOP.
* Update ja oder nein
IF v_updat = ‘X’.
CLEAR wa_itab.
DESCRIBE TABLE it_itab LINES sy-tfill.
LOOP AT it_itab INTO wa_itab.
UPDATE edidc
SET status = n_status
WHERE docnum = wa_itab-docnum
AND mestyp = wa_itab-mestyp
AND rcvprn = wa_itab-rcvprn
AND credat = wa_itab-credat
AND status = wa_itab-status.
zaehler = zaehler + 1.
* Nach 500 Sätzen erfolgt ein Commit auf der DB
IF zaehler = ‘500’.
COMMIT WORK.
zaehler = 0.
ENDIF.
CLEAR wa_itab.
ENDLOOP.
WRITE:/ ‘Es wurden: ‘, lines, ‘verändert.’.
ELSE.
WRITE:/ ‘Es würden: ‘, lines, ‘verändert.’.
ENDIF.
END-OF-SELECTION.
- Interview mit Björn Schulz (Software-Heroes.com) - 3. September 2024
- Daten aus ALV ermitteln - 3. September 2024
- So lange es den SAPGUI noch gibt… - 27. Juni 2024